#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//int main()
//{
//    unsigned long long fac(int n);
//    int n;
//   
//    scanf("%d", &n);
//    fac(n);
//    printf("%llu", fac(n));
//
//    return 0;
//}
//unsigned long long fac(int n)
//{
//    if (n == 1) return 1;
//    if (n == 2) return 2;
//    if (n > 2) return fac(n- 1) + fac(n - 2);
//}


//#include <stdio.h>
//#define N 5
//#include <string.h>
//void input(char** p, int n)
//{
//    int i = 0;
//    for (i = 0;i < n;i++)
//    {
//        gets(*(p + i));
//    }
//}
//void output(char** p, int n)
//{
//    int i = 0;
//    for (i = 0;i < n;i++)
//    {
//        puts(*(p + i));
//    }
//}
//void sort(char** p, int n)
//{
//    int i = 0;
//    int j = 0;
//    for (i = 0;i < n - 1;i++)
//    {
//        for (j = 0;j < n - 1 - i;j++)
//        {
//            if (strcmp(*(p + j), *(p + j + 1)) > 0)
//            {
//                char m[81] = { 0 };
//                strcpy(m, *(p + j));
//                strcpy(*(p + j), *(p + j + 1));
//                strcpy(*(p + j + 1), m);
//            }
//        }
//    }
//}
//int main()
//{
//    void input(char** p, int n);
//    void output(char** p, int n);
//    void sort(char** p, int n);
//
//    char str[N][81];
//    char* name[N];
//    char** p;
//    int i;
//    for (i = 0;i < N; i++)
//    {
//        *(name + i) = str[i];
//    }
//    p = name;
//
//    input(p, N);
//    sort(p, N);
//    output(p, N);
//
//    return 0;
//}


//#include <stdio.h>
//#include <string.h>
//#define N 20
//void input(char** p, int n)
//{
//	int i = 0;
//	for (i = 0;i < n;i++)
//	{
//		gets(*(p + i));
//	}
//}
//void bubbleSort(char** p, int n)
//{
//	int i = 0;
//	int j = 0;
//	for (i = 0;i < n - 1;i++)
//	{
//		for (j = 0;j < n - 1 - i;j++)
//		{
//			if (strcmp(*(p + j), *(p + j + 1)) < 0)
//			{
//				char arr[100] = { 0 };
//				strcpy(arr,*(p + j));
//				strcpy(*(p + j), *(p + j + 1));
//				strcpy(*(p + j + 1), arr);
//			}
//		}
//	}
//}
//void print_f(char** p, int n)
//{
//	int i = 0;
//	for (i = 0;i < n;i++)
//	{
//		printf("%s\n", *(p + i));
//	}
//}
//int main()
//{
//	char s[N][81] = { 0 };
//	int i = 0;
//	int n = 0;
//	scanf("%d", &n);
//	getchar();
//	char* p[N] = { 0 };
//	for (i = 0;i < n;i++)
//	{
//		p[i] = (s + i);
//	}
//	input(p, n);
//	bubbleSort(p, n);
//	print_f(p, n);
//	return 0;
//}

//
#include <stdio.h>
#define N 20
void input(int* p, int n)
{
    int i = 0;
    for (i = 0;i < n;i++)
    {
        scanf("%d", p + i);
    }
}
void output(int** p, int n)
{
    int i = 0;
    for (i = 0;i < n;i++)
    {
        printf("%8d", **(p + i));
    }
    printf("\n");
}
void bubbleSort(int** p, int n)
{
    int i = 0;
    int j = 0;
    for (i = 0;i < n-1;i++)
    {
        for (j = 0;j < n - 1 - i;j++)
        {
            if (**(p + j) < **(p + j + 1))
            {
                int m = 0;
                m = **(p + j);
                **(p + j) = **(p + j + 1);
                **(p + j + 1) = m;
            }
        }
    }
}
int main()
{
    void input(int* p, int n);
    void output(int** p, int n);
    void bubbleSort(int** p, int n);
    void seleSort(int** p, int n);

    int a[N];
    int n, i;
    int* pa[N];

    //printf("Please input number n:");
    scanf("%d", &n);

    input(a, n);
    for (i = 0; i < N; i++)
    {
        pa[i] = &a[i];
    }
    output(pa, n);
    bubbleSort(pa, n);
    //seleSort(pa,n);

    printf("Ordered numbers:\n");
    output(pa, n);

    return 0;
}

//#include <stdio.h>
//int main()
//{
//	void hanoi(int n, char one, char two, char three);
//	int m;
//	scanf("%d", &m);
//	hanoi(m, 'A', 'B', 'C');
//	return 0;
//}
//void hanoi(int n, char one, char two, char three)
//{
//	void move(char x, char y);
//	if (n == 1)
//	{
//		move(one, three);
//	}
//	else
//	{
//		hanoi(n - 1, one, three, two);
//		move(one, three);
//		hanoi(n - 1, two, one, three);
//	}
//}
//void move(char x, char y)
//{
//	printf("%c-->%c\n", x, y);
//}

